#!/bin/bash

## 启动Agile Note 各container服务

# 设置颜色
RED='\033[0;31m'
GREEN='\033[0;32m'
BLUE='\033[0;34m'
NC='\033[0m' # 无颜色

# 简单的日志函数
log_info() { echo -e "${BLUE}[INFO] $1${NC}"; }
log_error() { echo -e "${RED}[ERROR] $1${NC}"; }
log_success() { echo -e "${GREEN}[SUCCESS] $1${NC}"; }

log_info "开始启动所有容器服务 ..."

source .env

# 检查Docker是否启动
log_info "检查Docker是否启动..."
docker info > /dev/null 2>&1
if [ $? -ne 0 ]; then
    log_error "Docker未启动，请先启动Docker"
    exit 1
fi
log_success "Docker已启动"

# 删除所有的容器
log_info "删除既有容器 ..."
docker-compose -f all_docker_compose.yml -p agile_note down
if [ $? -ne 0 ]; then
    log_error "删除容器失败"
    exit 1
fi
log_success  "成功删除既有容器"

# 检查Milvus容器状态，如果已存在则启动，不存在则创建
log_info "检查各容器状态..."
# 尝试启动已存在的容器（如果有）
docker-compose -f all_docker_compose.yml -p agile_note start  
if [ $? -ne 0 ]; then
    log_info "启动现有容器失败，尝试创建新容器..."
    # 创建并启动容器
    docker-compose -f all_docker_compose.yml -p agile_note up -d
    if [ $? -ne 0 ]; then
        log_error "创建并启动所有容器失败"
        exit 1
    fi
else
    log_success "成功启动所有容器 "
fi

log_info "使用 'docker-compose ps' 查看容器状态"
docker-compose -f all_docker_compose.yml -p agile_note ps -a --format "table {{.Name}}\t{{.State}}\t{{.Ports}}"

log_success "所有容器服务启动成功"
